package com.hmily.spring.samples.scanner;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * <h1>Mapper的代理类。</h1>
 *
 * @author hmilyylimh
 * ^_^
 * @version 0.0.1
 * ^_^
 * @date 2021-10-31
 */
public class MapperProxy implements InvocationHandler {

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        // 可以拿到方法名称，到 xml 里面拿到对应的 sql，再用最原始的方法操作数据库，StatementHandler
        // 也可以通过方法拿到方法上面的注解中的sql

        // TODO 省略一千万字去操作sql，这里的目的主要是告诉大家，可以来这么进行代理，操作数据库，并且将数据库拿到的结果进行返回

        Map<String, Object> respMap = new HashMap<>();
        respMap.put("userName", "hmily");
        respMap.put("userArgs", args);
        respMap.put("userAge", "18");
        return respMap;
    }
}
